import router from './router'
import store from './store'
import { Message } from 'element-ui'
const whiteList = ['/login', '/auth-redirect','/adminPage/inputSearch'] //白名单，不需要登录就能够访问的
router.beforeEach(async(to, from, next) => {
    //乡镇编码
    let id = localStorage.getItem('id');
    //乡镇的管理员权限
    let ROLEID = localStorage.getItem('roleId');
    //如果有token 值，那就走这边
    if (ROLEID) {
        //用户token存在，就直接从登录页面跳到首页了
        if (to.path == '/login'||to.path=='#/') {
          if (ROLEID=='1'){
            next({path:'/adminPage/home'})
          }else {
            next({path:'/'})
          }
        }else {
          //这个id是系统启动的时候创建的，在main.js里面，去判断是不是第一次启动
            if (id != '1') {
                let addressUrl = to.path;
                let result = addressUrl.split('/')[1]
                await store.commit('permission/changeRoutes', result)
                next()
            } else {
                try {
                  //分发这个action然后动态添加路由具体看vue-router Api当中的addRoutes
                    const accessRoutes = await store.dispatch('permission/generateRoutes', ROLEID);
                    router.addRoutes(accessRoutes)
                  //用户登陆将不是第一次启动的状态值改变
                    localStorage.setItem('id', '2');
                    next({...to, replace: true })
                } catch (error) {
                    await store.dispatch('user/resetToken')
                    Message.error(error || 'Has Error')
                    next('/login')
                }
            }

        }
    } else {
        /* has no token*/
        if (whiteList.indexOf(to.path) !== -1) {
            // // 在免登录白名单，直接进入
            next()
        } else {
            //访问别的页面，如果没有权限，则跳转到登录页面
            next('/login')
                // NProgress.done()
        }
    }
})
router.afterEach((to,form) => {
    // finish progress bar
    //NProgress.done()
})
